package com.example.demo.controller.img;

import com.aliyun.oss.OSS;
import com.aliyun.oss.model.PutObjectResult;
import com.example.demo.utils.StringUtil;
import com.example.demo.entity.CollectionName;
import com.example.demo.entity.Result;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.*;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

/**
 * @description:
 * @author: cj
 * @create: 11-12-23 11:26:09
 */
@RestController
@RequestMapping("img")
public class ImgController {
    @Resource
    MongoTemplate mongoTemplate;

    /**
     * 添加图片
     */
    @PostMapping("/addImg")
    public Result addImg(@RequestBody Map map) {
        if (map == null || map.isEmpty()) {
            throw new RuntimeException( "参数错误" );
        }
        if (!StringUtil.isEmpty( map.get( "user_id" ), map.get( "img_patch" ) )) {
            throw new RuntimeException( "参数错误" );
        }
        mongoTemplate.insert( map, CollectionName.USER_IMG );
        return Result.ok( 200 );
    }

    /**
     * 上传图片
     */
    @PostMapping("/")
    public Result uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        String accessKeyId = "yourAccessKeyId";
        String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称，例如examplebucket。
        String bucketName = "examplebucket";
// 填写文件名。文件名包含路径，不包含Bucket名称。例如exampledir/exampleobject.txt。
        String objectName = "exampledir/exampleobject.txt";

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build( endpoint, accessKeyId, accessKeySecret );

        InputStream inputStream;
        try {
            inputStream = file.getInputStream();
        } catch (Exception e) {
            throw new RuntimeException( "文件转换错误" );
        }
        PutObjectResult putObjectResult = ossClient.putObject( bucketName, objectName, inputStream );


// 关闭OSSClient。
        ossClient.shutdown();
        return Result.ok( "" );
    }
}
